home *** CD-ROM | disk | FTP | other *** search
/ The CICA Windows Explosion! / The CICA Windows Explosion! - Disc 2.iso / programr / opttree.zip / MFC.ZIP / OTTEST.CPP < prev    next >
C/C++ Source or Header  |  1995-01-05  |  18KB  |  730 lines

  1. // ottest.cpp : Defines the class behaviors for the application.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "ottest.h"
  6.  
  7. #include "mainfrm.h"
  8.  
  9.  
  10. #ifdef _DEBUG
  11. #undef THIS_FILE
  12. static char BASED_CODE THIS_FILE[] = __FILE__;
  13. #endif
  14.  
  15. /////////////////////////////////////////////////////////////////////////////
  16. // COttestApp
  17.  
  18. BEGIN_MESSAGE_MAP(COttestApp, CWinApp)
  19.     //{{AFX_MSG_MAP(COttestApp)
  20.     ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
  21.     ON_COMMAND(ID_TEST1, OnTest1)
  22.     ON_COMMAND(ID_TEST2, OnTest2)
  23.     ON_COMMAND(ID_TEST3, OnTest3)
  24.     ON_COMMAND(ID_TEST4, OnTest4)
  25.     ON_COMMAND(ID_TEST5, OnTest5)
  26.     ON_COMMAND(ID_TEST6, OnTest6)
  27.     ON_COMMAND(ID_TEST7, OnTest7)
  28.     ON_COMMAND(ID_TEST8, OnTest8)
  29.     //}}AFX_MSG_MAP
  30. END_MESSAGE_MAP()
  31.  
  32. /////////////////////////////////////////////////////////////////////////////
  33. // COttestApp construction
  34.  
  35. COttestApp::COttestApp()
  36. {
  37.     // TODO: add construction code here,
  38.     // Place all significant initialization in InitInstance
  39. }
  40.  
  41. /////////////////////////////////////////////////////////////////////////////
  42. // The one and only COttestApp object
  43.  
  44. COttestApp NEAR theApp;
  45.  
  46. /////////////////////////////////////////////////////////////////////////////
  47. // COttestApp initialization
  48.  
  49. BOOL COttestApp::InitInstance()
  50. {
  51.  
  52. /*
  53.     // Register the application's document templates.  Document templates
  54.     //  serve as the connection between documents, frame windows and views.
  55.  
  56.     AddDocTemplate(new CSingleDocTemplate(IDR_MAINFRAME,
  57.             RUNTIME_CLASS(COttestDoc),
  58.             RUNTIME_CLASS(CMainFrame),     // main SDI frame window
  59.             RUNTIME_CLASS(COttestView)));
  60.  
  61.  
  62.     // create a new (empty) document
  63.     OnFileNew();      */
  64.     
  65.     
  66.     m_pMainWnd = new CMainFrame;
  67.     m_pMainWnd->ShowWindow(m_nCmdShow);
  68.     m_pMainWnd->UpdateWindow();
  69.     return TRUE;
  70. }
  71.  
  72. /////////////////////////////////////////////////////////////////////////////
  73. // CAboutDlg dialog used for App About
  74.  
  75. class CAboutDlg : public CDialog
  76. {
  77. public:
  78.     CAboutDlg();
  79.  
  80. // Dialog Data
  81.     //{{AFX_DATA(CAboutDlg)
  82.     enum { IDD = IDD_ABOUTBOX };
  83.     //}}AFX_DATA
  84.  
  85. // Implementation
  86. protected:
  87.     virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  88.     //{{AFX_MSG(CAboutDlg)
  89.         // No message handlers
  90.     //}}AFX_MSG
  91.     DECLARE_MESSAGE_MAP()
  92. };
  93.  
  94. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
  95. {
  96.     //{{AFX_DATA_INIT(CAboutDlg)
  97.     //}}AFX_DATA_INIT
  98. }
  99.  
  100. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  101. {
  102.     CDialog::DoDataExchange(pDX);
  103.     //{{AFX_DATA_MAP(CAboutDlg)
  104.     //}}AFX_DATA_MAP
  105. }
  106.  
  107. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  108.     //{{AFX_MSG_MAP(CAboutDlg)
  109.         // No message handlers
  110.     //}}AFX_MSG_MAP
  111. END_MESSAGE_MAP()
  112.  
  113. // App command to run the dialog
  114. void COttestApp::OnAppAbout()
  115. {
  116.     CAboutDlg aboutDlg;
  117.     aboutDlg.DoModal();
  118. }
  119.  
  120. /////////////////////////////////////////////////////////////////////////////
  121. // COttestApp commands
  122.  
  123. #ifndef __OPTTREE_H
  124. #include "opttree.h"
  125. #endif
  126.  
  127. class CMyOptNode:public COptNode           /* provide a description text field */
  128. {
  129.    public:
  130.  
  131.    /* for leaf node */
  132.    CMyOptNode(char txt[], int isxcl, int chksti, int enable):COptNode(txt, isxcl, chksti, enable)
  133.    {
  134.       setdesc(txt);
  135.    }
  136.  
  137.    /* for branch node */
  138.    CMyOptNode(char txt[], int isxcl, int isexp):COptNode(txt, isxcl, isexp)
  139.    {
  140.       setdesc(txt);
  141.    }
  142.  
  143.    char desc[80];
  144.  
  145.    void setdesc(char descx[])
  146.    {
  147.       lstrcpy(desc, descx);
  148.    }
  149. };
  150.  
  151. class CMyOptTree:public COptTree      /* provide our own notification handlers */
  152. {
  153.    public:
  154.  
  155.    CMyOptTree(CWnd *parent, int isshowdot = 1, int isindinv = 1):COptTree(parent, isshowdot, isindinv)
  156.    {
  157.  
  158.    }
  159.    void notifyselchg(COptNode *p);
  160. };
  161.  
  162. class CDlgTest1:public CDialog  
  163. {
  164.    COptTree *otc;
  165.  
  166.    public:
  167.  
  168.    int cap;
  169.  
  170.    CDlgTest1():CDialog("dlgtest")
  171.    {
  172.       otc = 0;
  173.    }
  174.   ~CDlgTest1()
  175.    {
  176.       otc->freeallnodes();
  177.  
  178.       delete otc;
  179.    } 
  180.  
  181.    BOOL OnInitDialog();
  182. };
  183.  
  184. class CDlgTest2:public CDialog
  185. {
  186.    COptTree *otc;
  187.  
  188.    public:
  189.  
  190.    int cap;
  191.  
  192.    CDlgTest2():CDialog("dlgtest")
  193.    {
  194.       otc = 0;
  195.    }
  196.   ~CDlgTest2()
  197.    {
  198.       otc->freeallnodes();
  199.  
  200.       delete otc;
  201.    } 
  202.  
  203.    BOOL OnInitDialog();
  204. };
  205.  
  206. class CDlgTest3:public CDialog
  207. {
  208.    COptTree *otc;
  209.  
  210.    public:
  211.  
  212.    int cap;
  213.  
  214.    CDlgTest3():CDialog("dlgtest")
  215.    {
  216.       otc = 0;
  217.    }
  218.   ~CDlgTest3()
  219.    {
  220.       otc->freeallnodes();
  221.  
  222.       delete otc;
  223.    } 
  224.  
  225.    BOOL OnInitDialog();
  226. };
  227.  
  228. class CDlgTest4:public CDialog
  229. {
  230.    COptTree *otc;
  231.  
  232.    public:
  233.  
  234.    int cap;
  235.  
  236.    CDlgTest4():CDialog("dlgtest")
  237.    {
  238.       otc = 0;
  239.    }
  240.   ~CDlgTest4()
  241.    {
  242.       otc->freeallnodes();
  243.  
  244.       delete otc;
  245.    } 
  246.  
  247.    BOOL OnInitDialog();
  248. };
  249.  
  250. BOOL CDlgTest1::OnInitDialog()
  251. {
  252.    CMyOptNode *p;
  253.    CMyOptNode *q;
  254.    CMyOptNode *r;
  255.    CMyOptNode *s;
  256.  
  257.    CDialog::OnInitDialog();
  258.  
  259.    if (!cap)
  260.    {
  261.       otc = new CMyOptTree(this, 1);        /* will be deleted by the dlg */
  262.  
  263.       p = new CMyOptNode("Software Products", 0, 1);
  264.       p->setdesc("All software products available are listed here");
  265.       p->begappendkid();
  266.       {
  267.          q = new CMyOptNode("Lotus 123 for Windows", 0, 0, 1);
  268.          q->setdesc("Spreadsheet program from Lotus Corp.");
  269.          p->appendkid(q);
  270.  
  271.          q = new CMyOptNode("Microsoft Word",        0, 1, 1);
  272.          q->setdesc("Word Processor from Microsoft");
  273.          p->appendkid(q);
  274.  
  275.          q = new CMyOptNode("Borland C++",           0, 1, 0);
  276.          q->setdesc("C++ compiler with edge leading C++ features");
  277.          p->appendkid(q);
  278.  
  279.          q = new CMyOptNode("Choose One Utility", 0, 0);
  280.          q->setdesc("You can choose one of the utilities listed below");
  281.          q->begappendkid();
  282.          {
  283.             r = new CMyOptNode("Visual Calendar",           1, 1, 1);
  284.             r->setdesc("Utility keeping track of your appointments");
  285.             q->appendkid(r);
  286.  
  287.             r = new CMyOptNode("Norton Desktop", 1, 0);
  288.             r->setdesc("A set of powerful utilities from Symantec");
  289.             r->begappendkid();
  290.             {
  291.                s = new CMyOptNode("Norton Disk Doctor", 0, 0, 1);
  292.                s->setdesc("Program checking and/or fixing your hard disk");
  293.                r->appendkid(s);
  294.  
  295.                s = new CMyOptNode("Virtual Desktop",    0, 0, 1);
  296.                s->setdesc("Manages your desktop");
  297.                r->appendkid(s);
  298.  
  299.                s = new CMyOptNode("INI Assistant",      0, 0, 1);
  300.                s->setdesc("Helps you understand the profound Windows INI settings");
  301.                r->appendkid(s);
  302.             }
  303.             r->endappendkid();
  304.             q->appendkid(r);
  305.  
  306.             r = new CMyOptNode("Business Card for Windows", 1, 0, 1);
  307.             r->setdesc("A simple free form database");
  308.             q->appendkid(r);
  309.  
  310.             r = new CMyOptNode("MicroHelp Uninstaller",     1, 0, 1);
  311.             r->setdesc("Uninstalls all the nasty Windows applications");
  312.             q->appendkid(r);
  313.          }
  314.          q->endappendkid();
  315.          p->appendkid(q);
  316.  
  317.          q = new CMyOptNode("Visual C++",        0, 1, 1);
  318.          q->setdesc("C++ compiler from Microsoft");
  319.          p->appendkid(q);
  320.       }
  321.       p->endappendkid();
  322.       otc->begappendroot();
  323.       otc->appendroot(p);
  324.       otc->endappendroot();
  325.    }
  326.    else
  327.    {
  328.       int i;
  329.       int j;
  330.       char b[20];
  331.  
  332.       otc = new CMyOptTree(this, 1, 0);               /* invalidate as a whole */
  333.  
  334.       otc->begappendroot();
  335.  
  336.       for (i = 0; i < 10; i++)
  337.       {
  338.          wsprintf(b, "%5d-%5d", i*1000, (i+1)*1000-1);
  339.  
  340.          p = new CMyOptNode(b, 0, 0);
  341.  
  342.          p->begappendkid();
  343.  
  344.          for (j = 0; j < 1000; j++)
  345.          {
  346.             wsprintf(b, "%5d", i*1000+j);
  347.  
  348.             q = new CMyOptNode(b, 0, 1, 1);
  349.  
  350.             p->appendkid(q);
  351.          }
  352.          p->endappendkid();
  353.  
  354.          otc->appendroot(p);
  355.       }
  356.       otc->endappendroot();
  357.    }
  358.    otc->create(102, 101);
  359.    SetWindowText("Test1 - Option Tree");
  360.    return 1;
  361. }
  362.  
  363. BOOL CDlgTest2::OnInitDialog()
  364. {
  365.    CMyOptNode *q;
  366.  
  367.    CDialog::OnInitDialog();
  368.  
  369.    otc = new CMyOptTree(this, 0);        /* will be deleted by the dlg */
  370.  
  371.    if (!cap)
  372.    {
  373.       otc->begappendroot();
  374.  
  375.       q = new CMyOptNode("Lotus 123 for Windows",     0, 1, 1);
  376.       q->setdesc("Spreadsheet program from Lotus Corp.");
  377.       otc->appendroot(q);
  378.  
  379.       q = new CMyOptNode("Microsoft Word",            0, 0, 1);
  380.       q->setdesc("Word Processor from Microsoft");
  381.       otc->appendroot(q);
  382.  
  383.       q = new CMyOptNode("Borland C++",               0, 0, 1);
  384.       q->setdesc("C++ compiler with edge leading C++ features");
  385.       otc->appendroot(q);
  386.  
  387.       q = new CMyOptNode("Visual Calendar",           0, 1, 1);
  388.       q->setdesc("Utility keeping track of your appointments");
  389.       otc->appendroot(q);
  390.  
  391.       q = new CMyOptNode("Business Card for Windows", 0, 0, 1);
  392.       q->setdesc("A simple free form database");
  393.       otc->appendroot(q);
  394.  
  395.       q = new CMyOptNode("Visual C++",                0, 1, 1);
  396.       q->setdesc("C++ compiler from Microsoft");
  397.       otc->appendroot(q);
  398.  
  399.       q = new CMyOptNode("Freeman Installer",         0, 0, 1);
  400.       q->setdesc("A powerful install utility from Freeman-Teresa Software");
  401.       otc->appendroot(q);
  402.  
  403.       q = new CMyOptNode("Adobe PhotoShop",           0, 1, 1);
  404.       q->setdesc("A very popular image processor");
  405.       otc->appendroot(q);
  406.  
  407.       q = new CMyOptNode("Delphi",                    0, 0, 1);
  408.       q->setdesc("A very high level client-server database development tool");
  409.       otc->appendroot(q);
  410.  
  411.       q = new CMyOptNode("DOOM",                      0, 1, 1);
  412.       q->setdesc("An exciting 3D action game from ID Software");
  413.       otc->appendroot(q);
  414.  
  415.       q = new CMyOptNode("PagePlus",                  0, 1, 1);
  416.       q->setdesc("A FREE DTP program");
  417.       otc->appendroot(q);
  418.  
  419.       q = new CMyOptNode("AusTax",                    0, 0, 1);
  420.       q->setdesc("Helps you reduce your tax payment");
  421.       otc->appendroot(q);
  422.  
  423.       q = new CMyOptNode("CIM",                       0, 1, 1);
  424.       q->setdesc("CompuServe Information Manager");
  425.       otc->appendroot(q);
  426.  
  427.       otc->endappendroot();
  428.    }
  429.    else
  430.    {
  431.       int i;
  432.       char b[10];
  433.  
  434.       otc->begappendroot();
  435.  
  436.       for (i = 0; i < 10000; i++)
  437.       {
  438.          wsprintf(b, "Node %d", i);
  439.          q = new CMyOptNode(b, 0, 1, 1);
  440.          otc->appendroot(q);
  441.       }
  442.       otc->endappendroot();
  443.    }
  444.    otc->create(102, 101);
  445.  
  446.    SetWindowText("Test2 - Option List");
  447.    return 1;
  448. }
  449.  
  450. BOOL CDlgTest3::OnInitDialog()
  451. {
  452.    CMyOptNode *p;
  453.    CMyOptNode *q;
  454.    CMyOptNode *r;
  455.    CMyOptNode *s;
  456.  
  457.    CDialog::OnInitDialog();
  458.  
  459.    otc = new CMyOptTree(this, 1);        /* will be deleted by the dlg */
  460.  
  461.    if (!cap)                                                /* default */
  462.    {
  463.       p = new CMyOptNode("Software Products", 0, 1);
  464.       p->setdesc("All software products available are listed here");
  465.       p->begappendkid();
  466.       {
  467.          q = new CMyOptNode("Lotus 123 for Windows", 0, 0, 2);
  468.          q->setdesc("Spreadsheet program from Lotus Corp.");
  469.          p->appendkid(q);
  470.  
  471.          q = new CMyOptNode("Microsoft Word",        0, 1, 2);
  472.          q->setdesc("Word Processor from Microsoft");
  473.          p->appendkid(q);
  474.  
  475.          q = new CMyOptNode("Borland C++",           0, 1, 2);
  476.          q->setdesc("C++ compiler with edge leading C++ features");
  477.          p->appendkid(q);
  478.  
  479.          q = new CMyOptNode("Choose One Utility", 0, 0);
  480.          q->setdesc("You can choose one of the utilities listed below");
  481.          q->begappendkid();
  482.          {
  483.             r = new CMyOptNode("Visual Calendar",           1, 1, 2);
  484.             r->setdesc("Utility keeping track of your appointments");
  485.             q->appendkid(r);
  486.  
  487.             r = new CMyOptNode("Norton Desktop", 1, 0);
  488.             r->setdesc("A set of powerful utilities from Symantec");
  489.             r->begappendkid();
  490.             {
  491.                s = new CMyOptNode("Norton Disk Doctor", 0, 0, 2);
  492.                s->setdesc("Program checking and/or fixing your hard disk");
  493.                r->appendkid(s);
  494.  
  495.                s = new CMyOptNode("Virtual Desktop",    0, 0, 2);
  496.                s->setdesc("Manages your desktop");
  497.                r->appendkid(s);
  498.  
  499.                s = new CMyOptNode("INI Assistant",      0, 0, 2);
  500.                s->setdesc("Helps you understand the profound Windows INI settings");
  501.                r->appendkid(s);
  502.             }
  503.             r->endappendkid();
  504.             q->appendkid(r);
  505.  
  506.             r = new CMyOptNode("Business Card for Windows", 1, 0, 2);
  507.             r->setdesc("A simple free form database");
  508.             q->appendkid(r);
  509.  
  510.             r = new CMyOptNode("MicroHelp Uninstaller",     1, 0, 2);
  511.             r->setdesc("Uninstalls all the nasty Windows applications");
  512.             q->appendkid(r);
  513.          }
  514.          q->endappendkid();
  515.          p->appendkid(q);
  516.  
  517.          q = new CMyOptNode("Visual C++",        0, 1, 2);
  518.          q->setdesc("C++ compiler from Microsoft");
  519.          p->appendkid(q);
  520.       }
  521.       p->endappendkid();
  522.       otc->begappendroot();
  523.       otc->appendroot(p);
  524.       otc->endappendroot();
  525.    }
  526.    else
  527.    {
  528.       int i;
  529.       int j;
  530.       char b[20];
  531.  
  532.       otc->begappendroot();
  533.  
  534.       for (i = 0; i < 10; i++)
  535.       {
  536.          wsprintf(b, "%5d-%5d", i*1000, (i+1)*1000-1);
  537.  
  538.          p = new CMyOptNode(b, 0, 0);
  539.  
  540.          p->begappendkid();
  541.  
  542.          for (j = 0; j < 1000; j++)
  543.          {
  544.             wsprintf(b, "%5d", i*1000+j);
  545.  
  546.             q = new CMyOptNode(b, 0, 1, 2);
  547.  
  548.             p->appendkid(q);
  549.          }
  550.          p->endappendkid();
  551.  
  552.          otc->appendroot(p);
  553.       }
  554.       otc->endappendroot();
  555.    }
  556.    otc->create(102, 101);
  557.  
  558.    SetWindowText("Test3 - Tree View");
  559.    return 1;
  560. }
  561.  
  562. BOOL CDlgTest4::OnInitDialog()
  563. {
  564.    CMyOptNode *q;
  565.  
  566.    CDialog::OnInitDialog();
  567.  
  568.  
  569.    otc = new CMyOptTree(this, 0);
  570.  
  571.    if (!cap)
  572.    {
  573.       otc->begappendroot();
  574.  
  575.       q = new CMyOptNode("Lotus 123 for Windows",     0, 0, 2);
  576.       q->setdesc("Spreadsheet program from Lotus Corp.");
  577.       otc->appendroot(q);
  578.  
  579.       q = new CMyOptNode("Microsoft Word",            0, 0, 2);
  580.       q->setdesc("Word Processor from Microsoft");
  581.       otc->appendroot(q);
  582.  
  583.       q = new CMyOptNode("Borland C++",               0, 0, 2);
  584.       q->setdesc("C++ compiler with edge leading C++ features");
  585.       otc->appendroot(q);
  586.  
  587.       q = new CMyOptNode("Visual Calendar",           0, 0, 2);
  588.       q->setdesc("Utility keeping track of your appointments");
  589.       otc->appendroot(q);
  590.  
  591.       q = new CMyOptNode("Business Card for Windows", 0, 0, 2);
  592.       q->setdesc("A simple free form database");
  593.       otc->appendroot(q);
  594.  
  595.       q = new CMyOptNode("Visual C++",                0, 0, 2);
  596.       q->setdesc("C++ compiler from Microsoft");
  597.       otc->appendroot(q);
  598.  
  599.       q = new CMyOptNode("Freeman Installer",         0, 0, 2);
  600.       q->setdesc("A powerful install utility from Freeman-Teresa Software");
  601.       otc->appendroot(q);
  602.  
  603.       q = new CMyOptNode("Adobe PhotoShop",           0, 0, 2);
  604.       q->setdesc("A very popular image processor");
  605.       otc->appendroot(q);
  606.  
  607.       q = new CMyOptNode("Delphi",                    0, 0, 2);
  608.       q->setdesc("A very high level client-server database development tool");
  609.       otc->appendroot(q);
  610.  
  611.       q = new CMyOptNode("DOOM",                      0, 0, 2);
  612.       q->setdesc("An exciting 3D action game from ID Software");
  613.       otc->appendroot(q);
  614.  
  615.       q = new CMyOptNode("PagePlus",                  0, 0, 2);
  616.       q->setdesc("A FREE DTP program");
  617.       otc->appendroot(q);
  618.  
  619.       q = new CMyOptNode("AusTax",                    0, 0, 2);
  620.       q->setdesc("Helps you reduce your tax payment");
  621.       otc->appendroot(q);
  622.  
  623.       q = new CMyOptNode("CIM",                       0, 0, 2);
  624.       q->setdesc("CompuServe Information Manager");
  625.       otc->appendroot(q);
  626.  
  627.       otc->endappendroot();
  628.    }
  629.    else
  630.    {
  631.       int i;
  632.       char b[10];
  633.  
  634.       otc->begappendroot();
  635.  
  636.       for (i = 0; i < 10000; i++)
  637.       {
  638.          wsprintf(b, "Node %d", i);
  639.          q = new CMyOptNode(b, 0, 0, 2);
  640.          otc->appendroot(q);
  641.       }
  642.       otc->endappendroot();
  643.    }
  644.    otc->create(102, 101);
  645.    SetWindowText("Test3 - Tree View");
  646.    return 1;
  647. }
  648. /* p is just selected */
  649. void CMyOptTree::notifyselchg(COptNode *p)
  650. {  
  651.    CMyOptNode *q;
  652.    
  653.    q = (CMyOptNode*)p;
  654.  
  655.    GetParent()->GetDlgItem(102)->SetWindowText(q->desc);
  656. }
  657.  
  658.  
  659. void COttestApp::OnTest1()  
  660. {
  661.     // TODO: Add your command handler code here
  662.    CDlgTest1 d;
  663.    
  664.    d.cap = 0;
  665.    d.DoModal();
  666. }
  667.  
  668. void COttestApp::OnTest2()
  669. {
  670.     // TODO: Add your command handler code here
  671.    CDlgTest2 d;
  672.    
  673.    d.cap = 0;
  674.    d.DoModal();
  675. }
  676.  
  677. void COttestApp::OnTest3()
  678. {
  679.     // TODO: Add your command handler code here
  680.    CDlgTest3 d;
  681.    
  682.    d.cap = 0;
  683.    d.DoModal();
  684. }
  685.  
  686. void COttestApp::OnTest4()
  687. {
  688.     // TODO: Add your command handler code here
  689.    CDlgTest4 d;
  690.    
  691.    d.cap = 0;
  692.    d.DoModal();
  693. }
  694.  
  695. void COttestApp::OnTest5()  
  696. {
  697.     // TODO: Add your command handler code here
  698.    CDlgTest1 d;
  699.    
  700.    d.cap = 1;
  701.    d.DoModal();
  702. }
  703.  
  704. void COttestApp::OnTest6()
  705. {
  706.     // TODO: Add your command handler code here
  707.    CDlgTest2 d;
  708.    
  709.    d.cap = 1;
  710.    d.DoModal();
  711. }
  712.  
  713. void COttestApp::OnTest7()
  714. {
  715.     // TODO: Add your command handler code here
  716.    CDlgTest3 d;
  717.    
  718.    d.cap = 1;
  719.    d.DoModal();
  720. }
  721.  
  722. void COttestApp::OnTest8()
  723. {
  724.     // TODO: Add your command handler code here
  725.    CDlgTest4 d;
  726.    
  727.    d.cap = 1;
  728.    d.DoModal();
  729. }
  730.